home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld Secrets (4th Edition)
/
Mac Secrets CD 4th Ed.toast
/
Shareware & Freeware
/
KeyQuencer 1.2.2
/
Developer’s toolkit
/
Sample extension code
/
Action.c
next >
Wrap
Text File
|
1995-12-16
|
3KB
|
81 lines
//==============================================================================
// KEYQUENCER EXTENSIONS SAMPLE - VERSION 1.2.2 - DECEMBER 1995
// By Alessandro Levi Montalcini <alm@torino.alpcom.it>
// ©1995-96 Binary Software, Inc. <binarysoft@eworld.com>
// Don’t forget to send us any cool extensions you create!
// This text looks best in monaco 9 font, 4 spaces per tab, no wrapping
// DOCUMENTATION IS AVAILABLE IN THE EXTENSION.H AND ACTION.H HEADERS
//==============================================================================
#include "Extension.h"
#include "Action.h"
Handle gTextResource;
//==============================================================================
// THIS ROUTINE IS CALLED WHEN THE EXTENSION IS INVOKED BY A MACRO
short run(ParamsPtr params, MachineHandle mac, GluePtr glue)
{
// This is where the extension does its work
// cur heap zone = active app heap, cur res file = unknown
// the extension file is closed, resources are not available
StringPtr string;
long length;
short index;
Str255 message;
message[0] = 0; // clear message string
for(index=0; index<params->paramsCount; ++index) // scan all params
{
string = params->parameter[index]; // get nth parameter
if(string[1]=='"' && string[0]>2) // check for quotes
{
if(message[0]>0) return kTellTooManyParams; // we only accept one parameter
BlockMoveData(&string[2], &message[1], (long)string[0]-2); // copy text, strip quotes
message[0] = string[0]-2;
}
else if(EqualString("\pLOADED", string, false, true)) // check for "loaded" keyword
{
if(message[0]>0) return kTellTooManyParams; // again, no more than 1 param
if(gTextResource==0L) // 'TEXT' 128 not found
{
(*glue->DisplayMessage)("\ptext resource not found at startup.", true);
return kExtGenericError;
}
length = GetHandleSize(gTextResource); // get text length
if(length>255) length = 255; // max length of our string
BlockMoveData(*gTextResource, &message[1], length); // copy to message string
message[0] = (unsigned char)length;
}
else return kTellUnknownKeyword; // unknown keyword found
}
if(message[0]==0) return kTellNotEnoughParams; // didn't find required parameter
(*glue->DisplayMessage)(message, false); // display our message
return kExtNoError; // we're done
}
//==============================================================================
// THIS ROUTINE IS CALLED ONCE AT STARTUP TIME
short init(ParamsPtr params, MachineHandle mac, GluePtr glue)
{
// This is only called once at startup time
// cur heap zone = sys heap, cur res file = extension res file
// you may load (and detach) resources and initialize your data
// glue is only available in recent versions, check for nil glue
gTextResource = Get1Resource('TEXT', 128); // load resource
if(gTextResource)
{
HNoPurge(gTextResource); // make it unpurgeable
DetachResource(gTextResource); // res file will be closed soon
}
if(glue) (*glue->ShowStartupIcon)(128); // show our own icon (no glue was available in KQ 1.0)
return kExtNoError; // everything OK
}
//==============================================================================